home *** CD-ROM | disk | FTP | other *** search
- #ifndef __XSlock_h__
- #define __XSlock_h__
-
- class XSLockManager
- {
- public:
- XSLockManager() { InitializeCriticalSection(&cs); };
- ~XSLockManager() { DeleteCriticalSection(&cs); };
- void Enter(void) { EnterCriticalSection(&cs); };
- void Leave(void) { LeaveCriticalSection(&cs); };
- protected:
- CRITICAL_SECTION cs;
- };
-
- XSLockManager g_XSLock;
-
- class XSLock
- {
- public:
- XSLock() { g_XSLock.Enter(); };
- ~XSLock() { g_XSLock.Leave(); };
- };
-
- CPerlObj* pPerl;
-
- #undef dXSARGS
- #define dXSARGS \
- dSP; dMARK; \
- I32 ax = mark - PL_stack_base + 1; \
- I32 items = sp - mark; \
- XSLock localLock; \
- ::pPerl = pPerl
-
-
- #endif
-